# Go语言条件语句
# 1 程序的流程结构
- 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。
- 顺序结构:从上向下,逐行执行。
- 选择结构:条件满足,某些代码才会执行。0-1次
- 分支语句:if,switch,select
- 循环结构:条件满足,某些代码会被反复的执行多次。0-N次
- 循环语句:for
# 2 条件语句
# 2.1 If语句
语法格式:
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
}
1
2
3
2
3
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
} else {
/* 在布尔表达式为 false 时执行 */
}
1
2
3
4
5
2
3
4
5
if 布尔表达式1 {
/* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{
/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{
/* 在上面两个布尔表达式都为false时,执行*/
}
1
2
3
4
5
6
7
2
3
4
5
6
7
示例代码:
package main
import "fmt"
func main() {
/* 定义局部变量 */
var a int = 10
/* 使用 if 语句判断布尔表达式 */
if a < 20 {
/* 如果条件为 true 则执行以下语句 */
fmt.Printf("a 小于 20\n" )
}
fmt.Printf("a 的值为 : %d\n", a)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是
if statement; condition {
}
if condition{
}
1
2
3
4
5
6
7
2
3
4
5
6
7
示例代码:
package main
import (
"fmt"
)
func main() {
if num := 10; num % 2 == 0 { //checks if number is even
fmt.Println(num,"is even")
} else {
fmt.Println(num,"is odd")
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
需要注意的是,num的定义在if里,那么只能够在该if..else语句块中使用,否则编译器会报错的。
func ifDemo1() {
score := 65
if score >= 90 {
fmt.Println("A")
} else if score > 75 {
fmt.Println("B")
} else {
fmt.Println("C")
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 3 条件判断特殊写法
# if条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断。
# 举个例子:
func ifDemo2() {
if score := 65; score >= 90 {
fmt.Println("A")
} else if score > 75 {
fmt.Println("B")
} else {
fmt.Println("C")
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
思考题: 上下两种写法的区别在哪里?